package com.baidu.bridge.api;

import com.baidu.bridge.dto.mb.*;
import retrofit2.Call;
import retrofit2.http.*;
import java.util.Map;

/**
 * @author baidu-106
 */
public interface MbApiService {

    // ============================== 用户管理接口 ==============================
    /**
     * 获取用户信息
     * @param id 用户ID
     * @return UserInfoResponse
     */
    @GET("scim/v1/userInfo")
    Call<UserInfoResponse> getUserInfo(@Query("id") String id);

    /**
     * 获取用户列表
     * @param organizationId 组织ID（可选）
     * @param needRoleInfo 是否需要角色信息（可选）
     * @param pageNo 页码（必选）
     * @param pageSize 页大小（必选）
     * @return UserListResponse
     */
    @GET("scim/v1/userList")
    Call<UserListResponse> getUserList(
            @Query("organizationId") String organizationId,
            @Query("needRoleInfo") String needRoleInfo,
            @Query("pageNo") int pageNo,
            @Query("pageSize") int pageSize
    );

    /**
     * 创建用户
     * @param request 创建用户请求体
     * @return CreateUserResponse
     */
    @POST("scim/v1/user/create")
    Call<CreateUserResponse> createUser(@Body CreateUserRequest request);

    // ============================== 组织管理接口 ==============================
    /**
     * 查询组织信息
     * @param id 组织ID
     * @return OrganizationInfoResponse
     */
    @GET("scim/v1/organizationInfo")
    Call<OrganizationInfoResponse> getOrganizationInfo(@Query("id") String id);

    /**
     * 创建组织
     * @param request 创建组织请求体
     * @return CreateOrganizationResponse
     */
    @POST("scim/v1/organization/create")
    Call<CreateOrganizationResponse> createOrganization(@Body CreateOrganizationRequest request);

    // ============================== 角色管理接口 ==============================
    /**
     * 查询角色详情
     * @param id 角色ID
     * @return RoleInfoResponse
     */
    @GET("scim/v1/role/info")
    Call<RoleInfoResponse> getRoleInfo(@Query("id") String id);

    /**
     * 创建角色
     * @param request 创建角色请求体
     * @return CreateRoleResponse
     */
    @POST("scim/v1/role/create")
    Call<CreateRoleResponse> createRole(@Body CreateRoleRequest request);
}
